package com.kun.framework.core.util;

import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;
import com.kun.framework.core.AbstractApplication;
import javafx.application.Platform;
import javafx.scene.Node;
import javafx.scene.control.Tooltip;
import javafx.scene.paint.Color;

import java.io.InputStream;
import java.util.regex.Pattern;

/**
 * 公共工具类
 *
 * @author gzc
 * @since 2024/8/6
 **/
public class ComUtil {
    /**
     * Windows绝对路径正则表达式
     */
    public static final Pattern FILE_REGEX = Pattern.compile("^[A-z]:\\\\([^|><?*\":\\/]*\\\\)*([^|><?*\":\\/]*)?$");

    /**
     * 判断路径是否是Windows绝对路径
     *
     * @param path 路径
     */
    public static boolean isWindowsPath(String path) {
        return StrUtil.isNotBlank(path) && ReUtil.isMatch(FILE_REGEX, path);
    }

    /**
     * 主线程执行
     *
     * @param runnable 需要执行的函数
     */
    public static void jfxThreadRun(Runnable runnable) {
        if (Platform.isFxApplicationThread()) {
            runnable.run();
        } else {
            Platform.runLater(runnable);
        }
    }

    /**
     * 创建悬浮提示文字
     *
     * @param node 节点
     * @param text 提示文字
     */
    public static void createTooltip(Node node, String text, int fontSize) {
        if (fontSize < 7) {
            fontSize = 7;
        }
        Tooltip tooltip = new Tooltip(text);
        tooltip.setStyle("-fx-font-size: " + fontSize);
        // 按钮悬浮提示
        Tooltip.install(node, tooltip);
    }

    /**
     * 颜色对象转换web字符串
     *
     * @param color 颜色对象
     * @return 示例:#3c3f41
     */
    public static String toRGBCode(Color color) {
        return String.format("#%02X%02X%02X",
                        (int) (color.getRed() * 255),
                        (int) (color.getGreen() * 255),
                        (int) (color.getBlue() * 255))
                .toLowerCase();
    }

//    public static void load(String pathName) {
//        InputStream load = ResourcesLoader.load(pathName);
//        InputStream resourceAsStream = AbstractApplication.class.getResourceAsStream(pathName);
//        InputStream resourceAsStream1 = ComUtil.class.getResourceAsStream(pathName);
//        System.out.println();
//    }



}
